import os from '@packages/lib-os';

export function openAppOldMethod(path = window.location.href, type) {
    let timer = null;

    // 绑定取消事件
    $(document).on('visibilitychange webkitvisibilitychange', () => {
        const tag = document.hidden || document.webkitHidden;

        if (tag && timer) {
            clearTimeout(timer);
        }
    });

    $(window).on('pagehide', () => {
        timer && clearTimeout(timer);
    });

    setTimeout(() => {
        if (os.ios) {
            if (os.wjb) {
                window.location.href = `https://appjb.weipaitang.com?path=${path}`;
                return;
            }
            if (type === 'store') {
                window.location.href = 'https://itunes.apple.com/cn/app/id1138166755';
                return;
            }
            window.location.href = `https://app.weipaitang.com?path=${path}`;
        } else {
            const localUrl = `wpt://?path=${path}`;
            // 创建iframe
            const openIframe = document.createElement('iframe');
            openIframe.style.display = 'none';
            document.body.appendChild(openIframe);
            // 抛出你的scheme
            openIframe.src = localUrl;
            timer = setTimeout(() => {
                window.location.href = `http://a.app.qq.com/o/simple.jsp?pkgname=com.weipaitang.wpt&android_schema=${encodeURIComponent(
                    localUrl
                )}`;

                // window.location.href = 'http://www.weipaitang.com/res/app/app-wpt-release.apk';
            }, 1000);
        }
    }, 100);
}

function doLaunch(path, type) {
    setTimeout(() => {
        window.WeixinJSBridge.invoke(
            'launchApplication',
            {
                appID: 'wxb7d7ef0335b4fceb', // 微信中注册的微拍堂app 的appId，其与微拍堂公众号appId是不一样的
                parameter: `?path=${path}`, // 自定义 scheme URL 中的 path 部分
                extInfo: `?path=${path}`, // 格式可以自定义，第三方 APP 自主处理，可以是
            },
            (res) => {
                if (res.err_msg !== 'launchApplication:ok') {
                    // launchApplication:fail jsapi 本身调用失败，或安卓上该应 用未安装，或 iOS 上用户在弹窗上点击拉起但该应用未安装
                    const token = WPT.sessionStorage.getItem('jumpToken');
                    !!token && WPT.Util.copyToClipboard(token); // 调用失败重新拉起剪切板, IOS 上会出现清空剪切板的情况
                    WPT.sessionStorage.clearItem('jumpToken');
                    openAppOldMethod(path, type);
                }
            }
        );
    }, 500);
}

// isNewWeixin此函数需要自己实现，解析微信UserAgent，大于6.5.16
function isNewWeixin() {
    const match = window.navigator.userAgent.match(/micromessenger\/([.\d]+)/i);
    if (match) {
        let [_, verison = ''] = match; // eslint-disable-line
        verison = verison.replace(/\d+/g, ($0) => ($0.length < 2 ? `0${$0}` : $0)).replace(/(^0+)|\./g, '');
        return Number(verison) > 60516;
    }
    return false;
}

/**
 * 打开App
 * 如果App未安装则会跳转到相应的下载页面
 *
 * @exports WPT/openApp
 * @param {String} [path=window.location.href] 页面路径 如果传递的path是空字符串，只会单纯打开App，不会跳转任何页面
 * @param {String} [token=''] 将内容复制到剪贴板，App通过解析剪贴板内容跳转到相应的页面
 */
export default function openApp(path = window.location.href, token = '', type = '') {
    if (os.dyXcx) {
        WPT.Modal.tips('请下载微拍堂App');
        return;
    }

    token && WPT.Util.copyToClipboard(token);

    if (isNewWeixin()) {
        if (window.WeixinJSBridge) {
            doLaunch(path, type);
        } else {
            document.addEventListener('WeixinJSBridgeReady', () => {
                doLaunch(path, type); // 此时立即调用权限可能还未准备好，所以doLaunch里需要延迟调用
            });
        }
    } else {
        // 老的跳转方式
        openAppOldMethod(path, type);
    }
}
